iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
Software Development

Unity遊戲開發系列 第 3

DAY03 剛體Rigidbody

  • 分享至 

  • xImage
  •  

為物件加入剛體後會使物件附加物理的特性,任何會動的遊戲物件都需要用到剛體來做到基本的物理互動

在製作3D物件時會用到Rigidbody這個元件

https://ithelp.ithome.com.tw/upload/images/20250227/20162530H1fQVnnumF.png
而製作2D物件則是Rigidbody2D

https://ithelp.ithome.com.tw/upload/images/20230918/20162530D73hvMVhHB.png

這裡先介紹一下Rigidbody2D欄位裡的各項設定

Body Type

  • Dynamic(動態):預設的型態,用在物理作用模擬下會移動的物件,會受到重力、碰撞等物理條件的影響,與所有類型的剛體碰撞,最耗效能的類型。

  • Kinematic(運動學):不會受到物理作用力影響,但是可以對其他剛體發揮物理影響,對系統資源要求較低。僅能碰撞Dynamic物件,無法碰撞Kinematic及Static物件。

  • Static(靜態):在物理作用模擬下不會移動,可以視其爲一個具有無限質量、不可移動的物體,最不耗系統資源。

Material

可以放入自訂的Physic 2D物理材質,用來調整物件碰撞時發生的摩擦和彈性。

Simulated

是否應用物理模擬的開關,關閉時任何附加的Collider2D的碰撞和Joint2D的約束效果都不會參與物理模擬。

Use Auto Mass

依據物件的碰撞器外形大小去自動計算物件的質量,勾選後無法改動Mass欄位的數值

  • Mass:物件的質量,會影響碰撞速度。
  • Linear Drag:物件移動時的阻力,影響物件在沒有發生物理行為下停止移動的速度。
  • Angular Drag:物件旋轉時的阻力,影響遊戲物件停止旋轉的速度。
  • Gravity Scale:重力的大小,影響物體承受重力的程度。

Collision Detection

碰撞偵測的模式

  • Discrete:預設,為間段性偵測碰撞
  • Continuous:為連續性偵測碰撞,能防止靜態物件被快速移動的物體穿透
  • Continuous Dynamic:動態連續,適用於快速移動的物體防止穿透

Sleeping Mode

決定rigidbody要不要啟用,在物件靜止時就會進入休眠減少不必要的運算,只有再次被改變屬性,或是透過事件產生改變才會再次啟用。有以下幾種模式:

  • Never Sleep 一直都啟用,不進入休眠
  • Start Awake 開始時啟用
  • Start Asleep 開始時休眠

Interpolate

能夠改善不規則位移,如果物件運動看起來有不明抖動可以打開這個進行修正。

  • None:預設為無
  • Interpolate:根據前一幀的位置來做平滑差值
  • Extrapolate:預測下一幀的位置來做平滑差值

Constraints

設定剛體的移動和旋轉限制

  • Freeze position XY:限制X軸或Y軸位移,可以做成平移或垂直移動。
  • Freeze rotation Z :限制Z軸轉動,人物移動時就不會因旋轉而倒在地上。

遊戲物件在加入Rigidbody後會因為物理作用開始墜落,3D遊戲物件可以先將Use Gravity的設定取消,2D遊戲物件則是取消Simulated的設定讓物件不再受到重力影響。或是在地面和遊戲物件都加入Collider碰撞器元件,讓遊戲物件會碰撞到地面而停止墜落

Yes

Yes


參考資料
https://docs.unity3d.com/2022.2/Documentation/Manual/Rigidbody2D-Static.html
https://www.twblogs.net/a/5b8cfcc82b717718833874f1
https://www.slideshare.net/sshiouwu/unity-2di-179107075


上一篇
DAY02 Uinty下載和介面介紹
下一篇
DAY04 碰撞框Collision
系列文
Unity遊戲開發30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言